package com.obelisco.vista.controles;

import nextapp.echo2.app.Button;

import com.obelisco.modelo.data.Operacion;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.estilos.Styles;
import com.obelisco.vista.imagen.ByteArrayImageReference;
import com.obelisco.vista.util.BarraHerramientasHelper;

public class BotonFuncion extends Button {

	private Operacion operacion;

	public BotonFuncion(Operacion operacion) {
		super();
		this.operacion = operacion;
		configurarBotonFuncion();
	}

	public BotonFuncion(String nombre) {
		super();

		this.operacion = BarraHerramientasHelper.getFuncion(nombre);
		configurarBotonFuncion();
	}

	private void configurarBotonFuncion() {
		if (operacion.getIcono().getContenido() == null
				|| operacion.getIcono().getContenido().length == 0) {

			if (operacion.getCodigo().trim().equals("I")) {
				setStyleName("Obelisco.Boton.Incluir");
			} else if (operacion.getCodigo().trim().equals("M")) {
				setStyleName("Obelisco.Boton.Editar");
			} else if (operacion.getCodigo().trim().equals("E")) {
				setStyleName("Obelisco.Boton.Eliminar");
			} else if (operacion.getCodigo().trim().equals("B")) {
				setStyleName("Obelisco.Boton.Consultar");
			} else if (operacion.getCodigo().trim().equals("P")) {
				setStyleName("Obelisco.Boton.Imprimir");
			} else {
				setStyleName("Obelisco.Boton.Desconocido");
			}

		} else {
			// TODO: Convertir el atributo icono en la imagen del boton
			setIcon(new ByteArrayImageReference(operacion.getIcono()
					.getContenido(), "image/jpg"));
		}

	}

	public TipoFuncion getTipoFuncion() {
		TipoFuncion tipo = TipoFuncion.NINGUNA;
		if (operacion != null) {
			if (operacion.getCodigo().trim().equals("I")) {
				tipo = TipoFuncion.INCLUIR;
			} else if (operacion.getCodigo().trim().equals("M")) {
				tipo = TipoFuncion.MODIFICAR;
			} else if (operacion.getCodigo().trim().equals("E")) {
				tipo = TipoFuncion.ELIMINAR;
			} else if (operacion.getCodigo().trim().equals("B")) {
				tipo = TipoFuncion.BUSCAR;
			} else if (operacion.getCodigo().trim().equals("P")) {
				tipo = TipoFuncion.IMPRIMIR;
			} else {
				tipo = TipoFuncion.DEFINIDA_USUARIO;
			}
		}
		return tipo;
	}

	public String getNombreFuncion() {
		String nombre = null;
		if (operacion != null) {
			nombre = operacion.getNombre();
		}
		return nombre;
	}
	
	public String getNombreOrdenar() {
		String nombre = null;
		if (operacion != null) {
			nombre = operacion.getNombre().toUpperCase();			
			if (nombre.equals(TipoFuncion.INCLUIR.name()))
			{
				return "A";
			} else if (nombre.equals(TipoFuncion.MODIFICAR.name()))
			{
				return "B";
			} else if (nombre.equals(TipoFuncion.ELIMINAR.name()))
			{
				return "C";
			} else if (nombre.equals(TipoFuncion.BUSCAR.name()))
			{
				return "D";
			} else if (nombre.equals(TipoFuncion.IMPRIMIR.name()))
			{
				return "E";
			} else if (nombre.equals(TipoFuncion.DEFINIDA_USUARIO.name()))
			{
				return "F";
			} else if (nombre.equals(TipoFuncion.NINGUNA.name()))
			{
				return "G";
			}
		}
		return nombre;
	}

	public Operacion getFuncion() {
		return operacion;
	}

}
